Use absolute offset for embedding area in grub-setup (i386-pc)
PATCH 1/1 Use absolute offset for embedding area in grub-setup (i386-pc)
Hi,
The attached patch uses grub_partition_get_start (p) instead of p->start in grub-setup's iteration over partitions. While we are at it, also use grub_partition_get_len (p) instead of p->len.
An alternative would be to assume that partitions are properly nested, and therefore iterate only over the top-level ones (i.e. those with p->parent == NULL). In that case, we could equivalently use p->start.
In the check for non-empty embedding area, the patch uses <= instead of == (as we may have embed_region.start == 1 && embed_region.end == 0).
Comments?
Grégoire
=== modified file 'ChangeLog'
ChangeLog +5 -0
@@ -1,3 +1,8 @@ +2010-06-05 Grégoire Sutre <[email protected]> + + * util/i386/pc/grub-setup.c (setup): Use absolute offsets for start of + embedding area. Use <= instead of == when checking for non-emptyness. + 2010-06-03 Colin Watson <[email protected]> * INSTALL: Document several build requirements for optional features
=== modified file 'util/i386/pc/grub-setup.c'
i386/pc/grub-setup.c +5 -5
@@ -126,8 +126,8 @@ setup (const char *dir,/* There's always an embed region, and it starts right after the MBR. */ embed_region.start =1 ; -if (embed_region.end > p->start) - embed_region.end = p->start; +if (embed_region.end >grub_partition_get_start (p)) + embed_region.end =grub_partition_get_start (p);return 0 ; }
@@ -147,8 +147,8 @@ setup (const char *dir,/* If there's an embed region, it is in a dedicated partition. */ if (!memcmp (&gptdata.type, &grub_gpt_partition_type_bios_boot,16 )) { - embed_region.start = p->start; - embed_region.end = p->start + p->len; + embed_region.start =grub_partition_get_start (p); + embed_region.end =grub_partition_get_start (p) +grub_partition_get_len (p);return 1 ; }
@@ -361,7 +361,7 @@ setup (const char *dir,else grub_util_error (_ ("No DOS-style partitions found" )); -if (embed_region.end == embed_region.start) +if (embed_region.end <= embed_region.start) {if (!strcmp (dest_partmap,"msdos" ))grub_util_warn (_ ("This msdos-style partition label has no post-MBR gap; embedding won't be possible!" ));
Quoted 5 lines · Grégoire Sutre
Hi,
The attached patch uses
grub_partition_get_start(p) instead ofp->startin grub-setup's iteration over partitions. While we are at it, also usegrub_partition_get_len(p) instead ofp->len.
Go ahead
Quoted 19 lines
An alternative would be to assume that partitions are properly nested, and therefore iterate only over the top-level ones (i.e. those with
p->parent== NULL). In that case, we could equivalently usep->start.In the check for non-empty embedding area, the patch uses <= instead of == (as we may have embed_region.start == 1 && embed_region.end == 0).
Comments?
Grégoire
_______________________________________________
Grub-devel mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/grub-devel
Signature · 2 lines
Regards Vladimir 'φ-coder/phcoder' Serbinenko